package com.heima.service.impl;

import com.heima.mapper.SkuClassMapper;
import com.heima.pojo.dto.PageQueryResult;
import com.heima.pojo.domain.PageResult;
import com.heima.pojo.domain.SkuClass;
import com.heima.pojo.vo.SkuClassVO;
import com.heima.service.SkuClassService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class SkuClassServiceImpl implements SkuClassService {

    @Autowired
    private SkuClassMapper skuClassMapper;


    /**
     * 添加商品分类
     * @param className
     * @return
     */
    @Override
    public Boolean addSkuClass(String className) {

        //获取当前登陆人上级的Id


        int res = skuClassMapper.insertSkuClass(className, 0);

        return res > 0;
    }


    /**
     * 查询商品分类
     *
     * @return
     */
    @Override
    public PageResult searchSku(PageQueryResult pqr) {
        // 1.校验参数
        if (pqr.getPageIndex() == null || pqr.getPageIndex() < 1) pqr.setPageIndex(1);
        if (pqr.getPageSize() == null || pqr.getPageSize() < 1) pqr.setPageSize(10);
        // 2.计算起始索引(用于数据库分页查询)     起始索引=(当前页码-1)*每页记录数
        Integer startIndex = (pqr.getPageIndex() - 1) * pqr.getPageSize();
        // 3.查询符合条件的总记录数
        Long totalCount;
        if (pqr.getClassName()!= null) {
            totalCount = skuClassMapper.selectCountByName(pqr.getClassName());
        } else {
            totalCount = skuClassMapper.selectCount();
        }
        // 4.如果总记录数为0,直接返回空结果
        List<SkuClass> currentPageRecords = null;
        if (totalCount > 0) {
            currentPageRecords = skuClassMapper.selectByName( startIndex,pqr.getPageSize(),pqr.getClassName());
        }

        // 5.计算总页数: totalCount / pageSize + (totalCount % pageSize == 0 ? 0 : 1)       总页数=总记录数 / 每页记录数 + (总记录数 % 每页记录数 == 0 ? 0 : 1)
        Integer totalPage =(int)  (totalCount / (long) pqr.getPageSize() + (totalCount % pqr.getPageSize() == 0 ? 0 : 1));
        // 6.创建PageResult并保存所有字段
        PageResult<SkuClass> pageResult = new PageResult<>(pqr.getPageIndex(), pqr.getPageSize(),  (long)totalPage, totalCount, currentPageRecords);
        return pageResult;
    }
    /**
     * 获取商品分类基本 信息
     * @param classId
     * @return
     */
    @Override
    public SkuClassVO getSkuClass(Integer classId) {
        SkuClassVO skuClassVO = skuClassMapper.getSkuClass(classId);
        return skuClassVO;
    }
    /**
     * 修改商品分类
     * @param classId
     * @param className
     * @return
     */
    @Override
    public Boolean updateSkuClass(Integer classId, String className) {
        int res = skuClassMapper.updateSkuClass(classId, className);
        return res>0;
    }

    @Override
    public Boolean deleteSkuClass(Integer classId) {
        int res = skuClassMapper.deleteSkuClass(classId);
        return res>0;
    }
}
